system testing and its types